<?php
// 应用公共文件

use think\facade\Cache;
use think\facade\Config;
/**
 * 
 * * 图片迁移
 * $arr 图片路径
 * $type 图片类型
 * (活动、展品)编号

*/
function moveImage($arr,$type,$id){
    $storageStie = 'http://1.12.76.149:15002';
    $directory='/www/wwwroot/storage.darong1994.cn/'.$type.'/'.$id;
    if(!file_exists($directory)){
        mkdir($directory, 0777, true);
    }
    $arr1=[];
    foreach($arr as $k=>$v){
        if(strstr($v, 'tmp')) {
            $tmp[]=$v; 
            $old=str_replace($storageStie, '/www/wwwroot/storage.darong1994.cn',  $v);
            $new=str_replace('/tmp/'.$type.'/'.date('Ymd').'/', "/$type/$id/",  $old);
            copy($old,$new);
            $arr[$k]=str_replace('/tmp/'.$type.'/'.date('Ymd'), '/'.$type.'/'.$id,  $v);
            $arr1[]=str_replace('/www/wwwroot/storage.darong1994.cn', '',  $new);
        }
    }
    return $arr1;
}

//获取logo信息
function getLogo(){
    return [
        'url'=>'https://darong.storage.1415926.com.cn/logo.jpg',
        'title'=>'大荣木业'
    ];
}

function getAccessToken() {
    // 使用 Redis 缓存 access_token，推荐使用
    $wx= Config::get('wx');
    $appid = $wx['mini']['appId'];
    $secret = $wx['mini']['secret'];
    $access_token=\think\facade\Cache::store('redis')->get('mp_accessToken');
    if(!$access_token){
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $secret;
        $output = json_decode(file_get_contents($url),true);
        $access_token = $output['access_token'];
        \think\facade\Cache::store('redis')->set('mp_accessToken',$access_token,7200);
    }
    return $access_token;
}

/**
 * POST发送数据
 * @param String $url       请求的地址
 * @param Array  $data      请求体参数
 * @param Array  $header    请求头参数
 * @return String
 */
function curlHeaderRequest($url, $data, $header,$method='POST'){
    $curl = curl_init();  
    curl_setopt($curl, CURLOPT_URL, $url);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);  
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);  
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);  
    if($method=="POST"){
        curl_setopt($curl, CURLOPT_POST, 1); 
        if ($data != ''){
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);  
        }
    }
    
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

    curl_setopt($curl, CURLOPT_TIMEOUT, 30);  
    curl_setopt($curl, CURLOPT_HEADER, 0);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    $result = curl_exec($curl);  
    curl_close($curl);  
    return $result;
}


 /**
 * 生成小程序码并保存到服务器
 * @param string $appid $accessToken
 * @param string $scene 场景参数，最大32个可见字符（只支持数字、大小写英文及部分特殊字符：!#$&'()*+,/:;=?@-._~）:cite[4]
 * @param string $page 小程序页面路径，例如 'pages/index/index'（必须是已经发布的小程序存在的页面）:cite[4]
 * @param string $savePath 服务器上保存图片的路径，例如 '/path/to/save/qrcode.png'
 * @param int $width 二维码宽度，单位 px，最小 280px，最大 1280px:cite[4]
 * @return array 操作结果
 */
function setWxacode($accessToken, $scene, $page, $savePath, $width = 430) {
    // 2. 构造请求 URL 和参数
    $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $accessToken;
    $data = [
        'scene' => $scene,
        'page' => $page,
        'width' => $width
    ];
    
    // 3. 发送 POST 请求（JSON 格式）:cite[4]
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略 SSL 证书验证（根据服务器环境决定）
    // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    // 设置头部：Content-Type 为 application/json:cite[4]
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    
    $result = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    // 4. 处理响应
    if ($httpCode == 200) {
        // 判断返回的是否是图片（成功时返回图片二进制流）:cite[4]:cite[10]
        if (is_null(json_decode($result))) { // 简单判断是否为 JSON，如果不是则认为成功收到图片
            // 确保保存目录存在
            $dir = dirname($savePath);
            if (!is_dir($dir)) {
                mkdir($dir, 0777, true);
            }
            // 将图片二进制数据保存到文件
            if (file_put_contents($savePath, $result) !== false) {
                return json_encode(['success' => true, 'message' => '小程序码保存成功', 'path' => $savePath]);
            } else {
                return json_encode(['success' => false, 'message' => '保存图片到服务器失败']);
            }
        } else {
            // 接口返回了 JSON 格式的错误信息:cite[4]:cite[10]
            $errorData = json_decode($result, true);
            return json_encode(['success' => false, 'message' => '微信接口错误：' . $errorData['errmsg'], 'errcode' => $errorData['errcode']]);
        }
    } else {
        return json_encode(['success' => false, 'message' => '网络请求失败，HTTP 状态码：' . $httpCode]);
    }
}